// Method:和某一个对象实例有联系
// function
// 封装栈类
function Stack(){

    // 栈的属性
    this.items = []

    // 栈的相关操作
    // 1. 将元素压入栈
        // 节约内存
    Stack.prototype.push = function (element) {
        this.items.push(element)
    }

    // 2.从栈中取出元素
    Stack.prototype.pop = function(){
        return this.items.pop()
    }
     
    // 3.查看一下栈顶元素
    Stack.prototype.peek = function(){
        return this.items[this.items.length - 1]
    }

    // 4.判断栈是否为空
    Stack.prototype.isEmpty = function(){
        return this.items.length == 0 
    }
    
    // 5.获取栈中元素的个数
    Stack.prototype.size = function(){
        return this.items.length
    }

    // 6.toString方法
    Stack.prototype.toString = function(){
        // 20 10 12 8 7 
        var resultString = '' 
        for(var i = 0; i<this.items.length;i++){
            resultString += this.items[i] + ''
        }
        return resultString
    }
}
// 栈的使用
var s = new Stack()

s.push(1)
s.push(10)
s.push(100)
// console.log(s.isEmpty());
// console.log(s.size());
// s.isEmpty()

// 函数: 将十进制数转换成二禁止数字
function dec2bin(decNumber){
    //1.定义栈对象
    var stack = new Stack()
    // 2.循环操作
    while(decNumber > 0 ){
        // 把余数放到栈中
        stack.push(decNumber%2)
        // 把数改成除数
        decNumber = Math.floor(decNumber/2)
    }
    // 3.从栈中取出 0 和 1 
    var binaryString = '' 
    while(!stack.isEmpty()){
        binaryString +=stack.pop()
    }
    return binaryString
}

console.log( 
    dec2bin(100)
);
// php 版本 
function dec2bin($num){
    $arr = []
    while($num > 0){
        $arr.push( $num%2 )
        $num = $num/2
    }
    return $arrs

}

